# 剑指Offer05.替换空格
# 请实现一个函数，把字符串s中的每个空格替换成"%20"。
#
# 示例1：
# 输入：s = "We are happy."
# 输出："We%20are%20happy."


class Solution:
    def replaceSpace(self, s: str) -> str:
        addlen = s.count(' ')
        list_s = list(s)
        list_s.extend(' ' * addlen * 2)
        s_len = len(s)-1
        right = len(list_s)-1
        while s_len:
            if s[s_len] != ' ':
                list_s[right] = s[s_len]
                s_len -= 1
                right -= 1
            else:
                list_s[right] = '0'
                right -= 1
                list_s[right] = '2'
                right -= 1
                list_s[right] = '%'
                right -= 1
                s_len -= 1
        if s_len == 0 and s[0] == ' ':
            list_s[right] = '0'
            right -= 1
            list_s[right] = '2'
            right -= 1
            list_s[right] = '%'
        res = "".join(list_s)
        return res


if __name__ == '__main__':
    s = "We are happy."
    s = "     "
    s = " 0 "
    tmp = Solution()
    res =tmp.replaceSpace(s)
    print(res)

    # 这里追加一下解释，如果按照python本来的思维，可以直接用replace函数，将空格替换成“%20”，但是感觉背离了本题的初衷
    # 这里把字符串转换成列表，然后追加空间的写法，挺有意思
    # 这里我看了一下随想录的python解法，可以把while条件设置为>=0,这样就可以照顾到首字符是空格的情况，不必在加一个if判断了，挺厉害的
